package com.angysnail.guava.collection;

import com.google.common.collect.LinkedHashMultiset;
import com.google.common.collect.Multiset;

public class MultiSetDemo {
	public static void main(String[] args) {
		Multiset<String> mset = LinkedHashMultiset.create();
		mset.add("a");
		mset.add("b");
		mset.add("c");
		mset.add("d");
		// 添加或删除指定元素使其在集合中的数量是count
		mset.setCount("a", 5);
		// 重复的也再打印多次
		mset.forEach(str -> {
			System.out.println(str);
		});
		// 类似于sql中的group by
		mset.forEachEntry((str, count) -> {
			System.out.println(String.format("%s 共有 %d", str, count));
		});

		mset.entrySet().forEach(entry -> {
			System.out.println(entry.getCount());
			System.out.println(entry.getElement());
		});

		mset.elementSet().forEach(str -> {
			System.out.println(str);
		});
		System.out.println(mset.count("a")); // 给定元素在Multiset中的计数
		System.out.println(mset);
		System.out.println(mset.size()); // 所有元素计数的总和,包括重复元素
		System.out.println(mset.elementSet().size()); // 所有元素计数的总和,不包括重复元素
		mset.clear(); // 清空集合
		System.out.println(mset);
	}
}